/*
使用插件：
1、创建类加载器
2、使用类加载器实例化某个插件对象
3、使用插件

*/

#include "ros/ros.h"
#include "pluginlib/class_loader.h"
#include "demo03_pluginlib/dbx_base.h"

int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "");
    //类加载器
    pluginlib::ClassLoader<dbx_base_ns::Dbx_Base>
        loader("demo03_pluginlib", "dbx_base_ns::Dbx_Base");
    boost::shared_ptr<dbx_base_ns::Dbx_Base> triangle =
        loader.createInstance("dbx_plugins_ns::SanBian"); //参数是子类的名称
    triangle->initlength(10);
    double zc = triangle->getZC();
    ROS_INFO("三角形周长:%f", zc);

    boost::shared_ptr<dbx_base_ns::Dbx_Base> square =
        loader.createInstance("dbx_plugins_ns::SiBian");
    square->initlength(10);
    double zc2 = square->getZC();
    ROS_INFO("四边形周长:%f", zc2);
    return 0;
}
